/**
 * 
 * @param {string} name  需要截取的url的键名称
 * @author kai.liu
 * @description 此方法是用来快速截取url上参数的方法（仅限history路由） 
 * @returns {String|null}
 * @example
 * this.$jxUtils.getQueryString('aaa')
 */
 export function getQueryString (name) {
    let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    let r = window.location.search.substr(1).match(reg);
    if (r != null) {
      return unescape(r[2]);
    }
    return null;
  }

/**
 * 
 * @param {*} ms 毫秒 1000ms=1s
 * @author ningkang.he
 * @description setTimeout的简单替代，部分场景更易维护
 * @returns {Promise}
 * @example
 * await this.$jxUtils.sleep(1000)
 */
export function sleep(ms = 0) {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve()
        }, ms)
    })
}


/**
 * 
 * @param {string} str  需要获取字符长度的字符串 
 * @author kai.liu
 * @returns {Number}
 * @description 把js的length长度换算成字符的长度，1个汉字是1个长度，两个字母/数字是一个1个长度
 * @example
 * this.$jxUtils.bLength('666')
 */
 export function bLength (str) {
    let l = str.length
    let blen = 0
    for (let i = 0; i < l; i++) {
      if ((str.charCodeAt(i) & 0xff00) !== 0) {
        blen += 1
      } else {
        blen += 0.5
      }
    }
    return Math.ceil(blen)
  }